package entities;

import java.io.Serializable;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Transient;

import entities.vo.ArticuloVO;

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="RH")
public abstract class Articulo implements Serializable, Comparable<Articulo>{

	private static final long serialVersionUID = 1L;
	private int referencia;
	private String descripcion;
	private String color;
	private float precioUnitario;
	private float precioOferta;
	private int ptoPedido;
	private String seccion;
	private String linea;
	private int stock;
	private boolean nuevo;
	private boolean disponible;
	
	
	public Articulo(int referencia, String descripcion, String color,
			float precioUnitario, float precioOferta, int ptoPedido,
			String seccion, String linea) {
		super();
		this.referencia = referencia;
		this.descripcion = descripcion;
		this.color = color;
		this.precioUnitario = precioUnitario;
		this.precioOferta = precioOferta;
		this.ptoPedido = ptoPedido;
		this.seccion = seccion;
		this.linea = linea;
	}
	public Articulo() {
		stock=0;
	}

	@Id
	public int getReferencia() {
		return referencia;
	}



	public void setReferencia(int referencia) {
		this.referencia = referencia;
	}



	public String getDescripcion() {
		return descripcion;
	}



	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}



	public String getColor() {
		return color;
	}



	public void setColor(String color) {
		this.color = color;
	}



	public float getPrecioUnitario() {
		return precioUnitario;
	}



	public void setPrecioUnitario(float precioUnitario) {
		this.precioUnitario = precioUnitario;
	}



	public float getPrecioOferta() {
		return precioOferta;
	}



	public void setPrecioOferta(float precioOferta) {
		this.precioOferta = precioOferta;
	}



	public int getPtoPedido() {
		return ptoPedido;
	}



	public void setPtoPedido(int ptoPedido) {
		this.ptoPedido = ptoPedido;
	}



	public String getSeccion() {
		return seccion;
	}



	public void setSeccion(String seccion) {
		this.seccion = seccion;
	}



	public String getLinea() {
		return linea;
	}



	public void setLinea(String linea) {
		this.linea = linea;
	}



	public boolean isNuevo() {
		return nuevo;
	}



	public void setNuevo(boolean nuevo) {
		this.nuevo = nuevo;
	}



	public boolean isDisponible() {
		return disponible;
	}



	
	public void setDisponible(boolean disponible) {
		this.disponible = disponible;
	}
	
	public void setArticuloVO(ArticuloVO articuloVO){
		this.referencia = articuloVO.getReferencia();
		this.stock = articuloVO.getStock();
		this.linea = articuloVO.getLinea();
		this.descripcion = articuloVO.getDescripcion();
		this.color = articuloVO.getColor();
		this.seccion = articuloVO.getSeccion();
		this.precioUnitario = articuloVO.getPrecioUnitario();
		this.precioOferta = articuloVO.getPrecioOferta();
		if (articuloVO.getPuntoPedido() != null)
			this.ptoPedido = articuloVO.getPuntoPedido();
	}
	
	@javax.persistence.Transient
	public ArticuloVO getArticuloVO(){
		return null;
	}
	@Transient
	public ArticuloVO getArticuloVO(ArticuloVO articuloVO){
		articuloVO.setReferencia(getReferencia());
		articuloVO.setColor(getColor());
		articuloVO.setDescripcion(getDescripcion());
		articuloVO.setLinea(getLinea());
		articuloVO.setPrecioOferta(getPrecioOferta());
		articuloVO.setPrecioUnitario(getPrecioUnitario());
		articuloVO.setSeccion(getSeccion());
		articuloVO.setStock(getStock());
		return articuloVO;
	}
	public int getStock() {
		return stock;
	}
	public void setStock(int stock) {
		this.stock = stock;
	}
	
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final Articulo other = (Articulo) obj;
		if (referencia == 0) {
			if (other.referencia != 0)
				return false;
		} else if (referencia != other.referencia)
			return false;
		return true;
	}
	
}
